home *** CD-ROM | disk | FTP | other *** search
- # Very simple test - Parse a file and print what happens
- import sys
- import pyexpat
- import sys
- import os
-
- class Outputter:
- def __init__(self, verbose=0):
- self.startcount = 0
- self.endcount = 0
- self.cdatacount = 0
- self.instcount = 0
- self.verbose = verbose
-
- def startelt(self, name, attrs):
- self.startcount = self.startcount + 1
- if self.verbose:
- print 'start', name
- for i in range(0, len(attrs), 2):
- print 'attr', attrs[i], attrs[i+1]
-
- def endelt(self, name):
- self.endcount = self.endcount + 1
- if self.verbose:
- print 'end', name
-
- def cdata(self, data):
- self.cdatacount = self.cdatacount + 1
- if self.verbose:
- print 'cdata', data
-
- def inst(self, target, data):
- self.instcount = self.instcount + 1
- if self.verbose:
- print 'inst', target, data
-
- if len(sys.argv) > 1 and sys.argv[1] == '-v':
- out = Outputter(verbose=1)
- del sys.argv[1]
- else:
- out = Outputter()
- if len(sys.argv) != 2:
- if os.name == 'mac':
- import macfs
- fss, ok = macfs.StandardGetFile()
- if not ok: sys.exit(0)
- sys.argv.append(fss.as_pathname())
- else:
- print 'Usage: pyexpattest [-v] inputfile'
- sys.exit(1)
-
- parser = pyexpat.ParserCreate()
- parser.StartElementHandler = out.startelt
- parser.EndElementHandler = out.endelt
- parser.CharacterDataHandler = out.cdata
- parser.ProcessingInstructionHandler = out.inst
-
- data = open(sys.argv[1]).read()
-
- rv = parser.Parse(data, 1)
-
- print 'Parser returned', rv
- if rv == 0:
- print '** Error', parser.ErrorCode
- print '** Line', parser.ErrorLineNumber
- print '** Column', parser.ErrorColumnNumber
- print '** Byte', parser.ErrorByteIndex
- print 'Summary of XML parser upcalls:'
- print 'start elements:', out.startcount
- print 'end elements:', out.endcount
- print 'character data:', out.cdatacount
- print 'processing instructions:', out.instcount
-